home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / bbs / Hydra11s.lha / HBBS / Source / Control / ControlGUI.c < prev    next >
C/C++ Source or Header  |  1996-10-31  |  21KB  |  681 lines

  1. /*********************************************/
  2. /*                                           */
  3. /*       Designer (C) Ian OConnor 1994       */
  4. /*                                           */
  5. /*      Designer Produced C include file     */
  6. /*                                           */
  7. /*********************************************/
  8.  
  9. #include "ControlGUI.h"
  10.  
  11.  
  12. UWORD HbbsLogo_brushColours[] =  /* Use LoadRGB4 to use this. */
  13.   {
  14.   2730,0,4095,1675,2457,3003,2985,4026
  15.   };
  16.  
  17. UWORD HbbsLogo_brushData[375] =
  18.   {
  19.   0,0,0,0,0,0,0,0,0,0,256,4096,0,0,0,256,4127,49409,64528,8129,256,4112,257,16,
  20.   4097,256,4112,257,16,4127,256,4112,257,16,4096,0,4096,768,48,0,0,4096,512,32,0,
  21.   508,4127,49153,64515,65281,256,4112,257,16,1,256,4112,257,16,1,256,4112,257,16,
  22.   16385,256,4096,256,16,1,256,4096,768,48,3,32513,63487,65151,65507,65534,0,0,0,
  23.   0,0,0,0,0,0,0,0,8704,32768,47488,32768,0,8704,32770,8744,32768,0,658,45218,
  24.   8200,32768,0,14868,42276,8584,32768,0,8804,41252,8232,32768,0,8768,41000,8232,
  25.   32768,0,8835,41192,8648,32768,0,0,0,0,0,65027,61439,64767,65479,65532,65027,
  26.   61439,65279,65519,65534,65027,61408,16126,1007,57406,65027,61408,16126,1007,
  27.   57406,65027,61408,16126,1007,57344,65027,61408,16126,1007,57344,65535,61439,
  28.   64767,65487,65532,65535,61439,64767,65479,65534,65027,61408,16126,992,254,
  29.   65027,61408,16126,992,254,65027,61408,16126,1007,33022,65027,61408,16126,1007,
  30.   33022,65027,61439,65279,65519,65534,65027,61439,64767,65479,65532,0,0,0,0,0,0,
  31.   0,0,0,0,0,17409,1,62353,0,0,17409,4,17497,0,0,17703,29124,17429,0,0,32041,
  32.   19016,17299,0,0,17609,16968,16465,0,0,17545,16976,17489,0,0,17671,16848,17297,
  33.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  34.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  35.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  36.   0,0,0,0,0,0,0,0,0,0,0,0,0,0
  37.   };
  38.  
  39. struct Menu *CtrlMenu = NULL;
  40.  
  41. struct NewMenu CtrlMenuNewMenu[] =
  42.   {
  43.   NM_TITLE, (STRPTR)"HBBS"        ,  NULL , 0, NULL, (APTR)~0,
  44.   NM_ITEM , (STRPTR)"About"       , (STRPTR)"?", 0, 0L, (APTR)~0,
  45.   NM_ITEM , (STRPTR)"Screen Mode" , (STRPTR)"M", 0, 0L, (APTR)~0,
  46.   NM_ITEM , NM_BARLABEL           ,  0 , 0, 0L, (APTR)~0,
  47.   NM_ITEM , (STRPTR)"Quit!"       , (STRPTR)"Q", 0, 0L, (APTR)~0,
  48.   NM_END  , NULL                  ,  NULL , 0, 0L, (APTR)~0
  49.   };
  50.  
  51. ULONG CtrlMenuTags[] =
  52.   {
  53.   (GT_TagBase+67), TRUE,
  54.   (GTMN_TextAttr), (ULONG)&HBBS8066,
  55.   (TAG_DONE)
  56.   };
  57.  
  58. ULONG BevelTags[] =
  59.   {
  60.   (GTBB_Recessed), TRUE,
  61.   (GT_VisualInfo), 0,
  62.   (TAG_DONE)
  63.   };
  64.  
  65. struct Window *Ctrl = NULL;
  66. APTR CtrlVisualInfo;
  67. APTR CtrlDrawInfo;
  68. struct Gadget *CtrlGList;
  69. struct Gadget *CtrlGadgets[25];
  70. UBYTE CtrlFirstRun = 0;
  71.  
  72. STRPTR Ctrl_LV1_CycleLabels[] =
  73. {
  74.   (STRPTR)"Last Callers",
  75.   (STRPTR)"Last Downloads",
  76.   (STRPTR)"Last Uploads",
  77.   (STRPTR)"Last Pagers",
  78.   (STRPTR)"Last PWFails",
  79.   (STRPTR)"Last Carrier",
  80.   NULL
  81. };
  82.  
  83. ULONG CtrlGadgetTags[] =
  84.   {
  85.   (GTLV_Selected), 0,
  86.   (TAG_END),
  87.   (GTCY_Labels), (ULONG)&Ctrl_LV1_CycleLabels[0],
  88.   (TAG_END),
  89.   (GTLV_Selected), 0,
  90.   (TAG_END),
  91.   (GTLV_Selected), 0,
  92.   (TAG_END),
  93.   (GTLV_Selected), 0,
  94.   (TAG_END),
  95.   (GA_Disabled), TRUE,
  96.   (TAG_END),
  97.   (GA_Disabled), TRUE,
  98.   (TAG_END),
  99.   (GA_Disabled), TRUE,
  100.   (TAG_END),
  101.   (GA_Disabled), TRUE,
  102.   (TAG_END),
  103.   (GA_Disabled), TRUE,
  104.   (TAG_END),
  105.   (GA_Disabled), TRUE,
  106.   (TAG_END),
  107.   (GA_Disabled), TRUE,
  108.   (TAG_END),
  109.   (GA_Disabled), TRUE,
  110.   (TAG_END),
  111.   (GA_Disabled), TRUE,
  112.   (TAG_END),
  113.   (GA_Disabled), TRUE,
  114.   (TAG_END),
  115.   (GTTX_Text), (ULONG)"             HydraBBS - (C) 1995-6 Dominic Clifton",
  116.   (TAG_END),
  117.   };
  118.  
  119. UWORD CtrlGadgetTypes[] =
  120.   {
  121.   LISTVIEW_KIND,
  122.   CYCLE_KIND,
  123.   BUTTON_KIND,
  124.   LISTVIEW_KIND,
  125.   BUTTON_KIND,
  126.   BUTTON_KIND,
  127.   BUTTON_KIND,
  128.   BUTTON_KIND,
  129.   BUTTON_KIND,
  130.   BUTTON_KIND,
  131.   LISTVIEW_KIND,
  132.   BUTTON_KIND,
  133.   BUTTON_KIND,
  134.   LISTVIEW_KIND,
  135.   BUTTON_KIND,
  136.   BUTTON_KIND,
  137.   BUTTON_KIND,
  138.   BUTTON_KIND,
  139.   BUTTON_KIND,
  140.   BUTTON_KIND,
  141.   BUTTON_KIND,
  142.   BUTTON_KIND,
  143.   BUTTON_KIND,
  144.   BUTTON_KIND,
  145.   TEXT_KIND,
  146.   };
  147.  
  148. struct NewGadget CtrlNewGad[] =
  149.   {
  150.   93, 30, 144, 60, NULL, &HBBS8066, Ctrl_LV1, 1, NULL,  (APTR)&CtrlGadgetTags[0],
  151.   93, 14, 144, 15, NULL, &HBBS8066, Ctrl_LV1_Cycle, 1, NULL,  (APTR)&CtrlGadgetTags[3],
  152.   93, 1, 144, 12, (UBYTE *)"Information", &HBBS8066, Ctrl_LV1_Info, 16, NULL,  NULL,
  153.   1, 14, 90, 77, NULL, &HBBS8066, Ctrl_LV2_Nodes, 4, NULL,  (APTR)&CtrlGadgetTags[6],
  154.   205, 91, 67, 13, (UBYTE *)"Window", &HBBS8066, Ctrl_Window, 16, NULL,  NULL,
  155.   137, 91, 67, 13, (UBYTE *)"Watch", &HBBS8066, Ctrl_Screen, 16, NULL,  NULL,
  156.   69, 91, 67, 13, (UBYTE *)"Stop", &HBBS8066, Ctrl_Stop, 16, NULL,  NULL,
  157.   1, 91, 67, 13, (UBYTE *)"Start", &HBBS8066, Ctrl_Start, 16, NULL,  NULL,
  158.   346, 1, 105, 12, (UBYTE *)"Configure", &HBBS8066, Ctrl_Configure, 16, NULL,  NULL,
  159.   239, 1, 105, 12, (UBYTE *)"Shutdown All", &HBBS8066, Ctrl_Shutdown, 16, NULL,  NULL,
  160.   452, 1, 179, 132, NULL, &HBBS8066, Ctrl_LV3_Commands, 1, NULL,  (APTR)&CtrlGadgetTags[9],
  161.   273, 91, 67, 13, (UBYTE *)"Config", &HBBS8066, Ctrl_Config, 16, NULL,  NULL,
  162.   1, 1, 91, 12, (UBYTE *)"Status", &HBBS8066, Ctrl_Status, 16, NULL,  NULL,
  163.   239, 14, 212, 76, NULL, &HBBS8066, Ctrl_Who, 1, NULL,  (APTR)&CtrlGadgetTags[12],
  164.   273, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_5, 16, NULL,  (APTR)&CtrlGadgetTags[15],
  165.   205, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_4, 16, NULL,  (APTR)&CtrlGadgetTags[18],
  166.   137, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_3, 16, NULL,  (APTR)&CtrlGadgetTags[21],
  167.   69, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_2, 16, NULL,  (APTR)&CtrlGadgetTags[24],
  168.   1, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_1, 16, NULL,  (APTR)&CtrlGadgetTags[27],
  169.   1, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_6, 16, NULL,  (APTR)&CtrlGadgetTags[30],
  170.   69, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_7, 16, NULL,  (APTR)&CtrlGadgetTags[33],
  171.   137, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_8, 16, NULL,  (APTR)&CtrlGadgetTags[36],
  172.   205, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_9, 16, NULL,  (APTR)&CtrlGadgetTags[39],
  173.   273, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_10, 16, NULL,  (APTR)&CtrlGadgetTags[42],
  174.   69, 134, 560, 12, (UBYTE *)"Status:", &HBBS8066, Ctrl_StatusText, 1, NULL,  (APTR)&CtrlGadgetTags[45],
  175.   };
  176. UWORD CtrlZoomInfo[4] = { 0, 10, 196, 11 };
  177.  
  178. struct IntuiText CtrlCfgTexts[] =
  179.   {
  180.   2, 0, JAM2, 16, 3, &HBBS8066, (UBYTE *)"Screen Settings", &CtrlCfgTexts[1],
  181.   2, 0, JAM2, 16, 39, &HBBS8066, (UBYTE *)"Misc Settings", NULL
  182.   };
  183.  
  184. struct Window *CtrlCfg = NULL;
  185. APTR CtrlCfgVisualInfo;
  186. APTR CtrlCfgDrawInfo;
  187. struct Gadget *CtrlCfgGList;
  188. struct Gadget *CtrlCfgGadgets[3];
  189. UBYTE CtrlCfgFirstRun = 0;
  190.  
  191. UWORD CtrlCfgGadgetTypes[] =
  192.   {
  193.   BUTTON_KIND,
  194.   BUTTON_KIND,
  195.   BUTTON_KIND,
  196.   };
  197.  
  198. struct NewGadget CtrlCfgNewGad[] =
  199.   {
  200.   11, 13, 110, 13, (UBYTE *)"Pick Mode", &HBBS8066, CtrlCfg_ScreenMode, 16, NULL,  NULL,
  201.   124, 13, 110, 13, (UBYTE *)"Save", &HBBS8066, CtrlCfg_Save, 16, NULL,  NULL,
  202.   11, 50, 110, 13, (UBYTE *)"BBS Config", &HBBS8066, CtrlCfg_EditBBSConfig, 16, NULL,  NULL,
  203.   };
  204.  
  205. struct IntuiText LoadingTexts[] =
  206.   {
  207.   2, 0, JAM2, 12, 4, &HBBS8066, (UBYTE *)"HydraBBS", &LoadingTexts[1],
  208.   2, 3, JAM1, 118, 15, &HBBS8066, (UBYTE *)"(C) 1996 Dominic Clifton", &LoadingTexts[2],
  209.   2, 1, JAM1, 137, 25, &HBBS8066, (UBYTE *)"Deluxe Software Ltd", &LoadingTexts[3],
  210.   2, 3, JAM1, 25, 48, &HBBS8066, (UBYTE *)"HydraBBS Now Loading, Please Wait", &LoadingTexts[4],
  211.   2, 3, JAM1, 42, 62, &HBBS8066, (UBYTE *)"Please see the docs on how to", &LoadingTexts[5],
  212.   2, 3, JAM1, 55, 71, &HBBS8066, (UBYTE *)"register your copy of HBBS", &LoadingTexts[6],
  213.   2, 3, JAM1, 31, 85, &HBBS8066, (UBYTE *)"If you want continued development", &LoadingTexts[7],
  214.   2, 3, JAM1, 31, 95, &HBBS8066, (UBYTE *)"registering HBBS will ensure that", &LoadingTexts[8],
  215.   2, 3, JAM1, 73, 104, &HBBS8066, (UBYTE *)"you get constant updates", &LoadingTexts[9],
  216.   2, 3, JAM1, 45, 133, &HBBS8066, (UBYTE *)"SHAREWARE SHAREWARE SHAREWARE", NULL
  217.   };
  218.  
  219. struct Window *Loading = NULL;
  220. APTR LoadingVisualInfo;
  221. APTR LoadingDrawInfo;
  222. UBYTE LoadingFirstRun = 0;
  223.  
  224. UWORD    CtrlScrndefpens = {65535};
  225.  
  226. UWORD   CtrlScrnColors[] =
  227.     {
  228.     0,10,10,10,
  229.     1,0,0,0,
  230.     65535,0,0,0
  231.     };
  232.  
  233. ULONG  CtrlScrnError=0;
  234.  
  235. ULONG   CtrlScrnTags[] =
  236.     {
  237.     (SA_Title),(ULONG)"HBBS",
  238.     (SA_PubName),(ULONG)"CtrlScrn",
  239.     (SA_Depth)   ,2,
  240.     (SA_Left)    ,0,
  241.     (SA_Top)     ,0,
  242.     (SA_Width)   ,640,
  243.     (SA_Height)  ,256,
  244.     (SA_DisplayID),167936,
  245.     (SA_Overscan),1,
  246.     (SA_Font),(ULONG)&HBBS8066,
  247.     (SA_Behind),1,
  248.     (SA_Quiet),0,
  249.     (SA_ShowTitle),1,
  250.     (SA_AutoScroll),1,
  251.     (SA_FullPalette),1,
  252.     (SA_ErrorCode),(ULONG)(&CtrlScrnError),
  253.     (SA_Pens),(ULONG)&CtrlScrndefpens,
  254.     (SA_Colors),(ULONG)CtrlScrnColors,
  255.     (TAG_DONE)
  256.     };
  257.  
  258. struct Library *DiskfontBase = NULL;
  259. struct Library *GadToolsBase = NULL;
  260. struct GfxBase *GfxBase = NULL;
  261. struct IntuitionBase *IntuitionBase = NULL;
  262.  
  263. struct Image HbbsLogo_brush = { 0, 0, 80, 25, 3, NULL, 7, 0, NULL};
  264.  
  265. APTR WaitPointer = NULL;
  266. UWORD WaitPointerData[] =
  267.     {
  268.     0x0000,0x0000,0x0400,0x07c0,
  269.     0x0000,0x07c0,0x0100,0x0380,
  270.     0x0000,0x07e0,0x07c0,0x1ff8,
  271.     0x1ff0,0x3fec,0x3ff8,0x7fde,
  272.     0x3ff8,0x7fbe,0x7ffc,0xff7f,
  273.     0x7ffc,0xffff,0x7ffc,0xffff,
  274.     0x3ff8,0x7ffe,0x3ff8,0x7ffe,
  275.     0x1ff0,0x3ffc,0x07c0,0x1ff8,
  276.     0x0000,0x07e0,0x0000,0x0000
  277.     };
  278.  
  279. struct TextAttr HBBS8066 = { (STRPTR)"HBBS.font", 8, 0, 66 };
  280.  
  281. int MakeMenuCtrlMenu( APTR MenuVisualInfo )
  282. {
  283.   if (NULL == (CtrlMenu = CreateMenusA( CtrlMenuNewMenu, NULL)))
  284.     return( 1L );
  285.   LayoutMenusA( CtrlMenu, MenuVisualInfo, (struct TagItem *)(&CtrlMenuTags[0]));
  286.   return( 0L );
  287. }
  288.  
  289. void RendWindowCtrl( struct Window *Win, void *vi )
  290. {
  291. UWORD offx = Win->BorderLeft;
  292. UWORD offy = Win->BorderTop;
  293. if (Win != NULL)
  294.   {
  295.   DrawImage( Win->RPort, &HbbsLogo_brush, 357+offx, 99+offy);
  296.   BevelTags[3] = (ULONG)vi;
  297.   DrawBevelBoxA( Win->RPort, 1+offx,134+offy,630,12, (struct TagItem *)(&BevelTags[2]));
  298.   DrawBevelBoxA( Win->RPort, 341+offx,91+offy,110,41, (struct TagItem *)(&BevelTags[2]));
  299.   DrawBevelBoxA( Win->RPort,341+4+offx,91+2+offy,110-8,41-4, (struct TagItem *)(&BevelTags[0]));
  300.   }
  301. }
  302.  
  303. int OpenCtrlWindow( struct Screen *Scr)
  304. {
  305. UWORD offx, offy;
  306. UWORD loop;
  307. struct NewGadget newgad;
  308. struct Gadget *Gad;
  309. struct Gadget *Gad2;
  310. APTR Cla;
  311. if (CtrlFirstRun == 0)
  312.   {
  313.   CtrlFirstRun = 1;
  314.   }
  315. if (Ctrl == NULL)
  316.   {
  317.   offx = Scr->WBorLeft;
  318.   offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  319.   if (NULL != ( CtrlVisualInfo = GetVisualInfoA( Scr, NULL)))
  320.     {
  321.     if (NULL != ( CtrlDrawInfo = GetScreenDrawInfo( Scr)))
  322.       {
  323.       CtrlGList = NULL;
  324.       Gad = CreateContext( &CtrlGList);
  325.       for ( loop=0 ; loop<25 ; loop++ )
  326.         if (CtrlGadgetTypes[loop] != 198)
  327.           {
  328.           CopyMem((char * )&CtrlNewGad[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  329.           newgad.ng_VisualInfo = CtrlVisualInfo;
  330.           newgad.ng_LeftEdge += offx;
  331.           newgad.ng_TopEdge += offy;
  332.           CtrlGadgets[ loop ] = NULL;
  333.           CtrlGadgets[ newgad.ng_GadgetID - CtrlFirstID ] = Gad = CreateGadgetA( CtrlGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  334.           }
  335.       for ( loop=0 ; loop<25 ; loop++ )
  336.         if (CtrlGadgetTypes[loop] == 198)
  337.           {
  338.           CtrlGadgets[ loop ] = NULL;
  339.           Cla = NULL;
  340.           if (Gad)
  341.             CtrlGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, CtrlNewGad[ loop ].ng_GadgetText, CtrlNewGad[ loop ].ng_UserData );
  342.           }
  343.       if (Gad != NULL)
  344.         {
  345.         if (NULL != (Ctrl = OpenWindowTags( NULL, (WA_Left), 0,
  346.                 (WA_Top), 11,
  347.                 (WA_Width), 636+offx,
  348.                 (WA_Height), 149+offy,
  349.                 (WA_Title), "HBBS Control",
  350.                 (WA_ScreenTitle), "(C) Deluxe Software Ltd. Written By Dominic Clifton (Hydra/LSD)",
  351.                 (WA_MinWidth), 196,
  352.                 (WA_MinHeight), 11,
  353.                 (WA_MaxWidth), 640,
  354.                 (WA_MaxHeight), 160,
  355.                 (WA_DragBar), TRUE,
  356.                 (WA_DepthGadget), TRUE,
  357.                 (WA_CloseGadget), TRUE,
  358.                 (WA_Activate), TRUE,
  359.                 (WA_Dummy+0x30), TRUE,
  360.                 (WA_SmartRefresh), TRUE,
  361.                 (WA_AutoAdjust), TRUE,
  362.                 (WA_Gadgets), CtrlGList,
  363.                 (WA_Zoom), CtrlZoomInfo,
  364.                 (WA_PubScreen) , (LONG)Scr,
  365.                 (WA_IDCMP),6292348,
  366.                 (TAG_END))))
  367.           {
  368.           RendWindowCtrl(Ctrl, CtrlVisualInfo );
  369.           GT_RefreshWindow( Ctrl, NULL);
  370.           RefreshGList( CtrlGList, Ctrl, NULL, ~0);
  371.           if (CtrlMenu == NULL)
  372.             MakeMenuCtrlMenu( CtrlVisualInfo);
  373.           if (CtrlMenu != NULL)
  374.             {
  375.             SetMenuStrip( Ctrl, CtrlMenu);
  376.             return( 0L );
  377.             }
  378.           CloseWindow( Ctrl );
  379.           }
  380.         }
  381.       FreeGadgets( CtrlGList);
  382.       FreeScreenDrawInfo( Scr, CtrlDrawInfo );
  383.       }
  384.     FreeVisualInfo( CtrlVisualInfo );
  385.     }
  386.   }
  387. else
  388.   {
  389.   WindowToFront(Ctrl);
  390.   ActivateWindow(Ctrl);
  391.   return( 0L );
  392.   }
  393. return( 1L );
  394. }
  395.  
  396. void CloseCtrlWindow( void )
  397. {
  398. if (Ctrl != NULL)
  399.   {
  400.   ClearMenuStrip( Ctrl);
  401.   FreeMenus( CtrlMenu);
  402.   CtrlMenu = NULL;
  403.   FreeScreenDrawInfo( Ctrl->WScreen, CtrlDrawInfo );
  404.   CtrlDrawInfo = NULL;
  405.   CloseWindow( Ctrl);
  406.   Ctrl = NULL;
  407.   FreeVisualInfo( CtrlVisualInfo);
  408.   FreeGadgets( CtrlGList);
  409.   }
  410. }
  411.  
  412. void RendWindowCtrlCfg( struct Window *Win, void *vi )
  413. {
  414. int loop;
  415. UWORD offx = Win->BorderLeft;
  416. UWORD offy = Win->BorderTop;
  417. if (Win != NULL)
  418.   {
  419.   BevelTags[3] = (ULONG)vi;
  420.   DrawBevelBoxA( Win->RPort, 2+offx,5+offy,242,29, (struct TagItem *)(&BevelTags[0]));
  421.   DrawBevelBoxA( Win->RPort,2+4+offx,5+2+offy,242-8,29-4, (struct TagItem *)(&BevelTags[2]));
  422.   DrawBevelBoxA( Win->RPort, 2+offx,41+offy,241,29, (struct TagItem *)(&BevelTags[0]));
  423.   DrawBevelBoxA( Win->RPort,2+4+offx,41+2+offy,241-8,29-4, (struct TagItem *)(&BevelTags[2]));
  424.   for( loop=0; loop<2; loop++)
  425.     if (CtrlCfgTexts[loop].ITextFont==NULL)
  426.       CtrlCfgTexts[loop].ITextFont=Win->WScreen->Font;
  427.   PrintIText( Win->RPort, CtrlCfgTexts, offx, offy);
  428.   }
  429. }
  430.  
  431. int OpenCtrlCfgWindow( struct Screen *Scr)
  432. {
  433. UWORD offx, offy;
  434. UWORD loop;
  435. struct NewGadget newgad;
  436. struct Gadget *Gad;
  437. struct Gadget *Gad2;
  438. APTR Cla;
  439. if (CtrlCfgFirstRun == 0)
  440.   {
  441.   CtrlCfgFirstRun = 1;
  442.   }
  443. if (CtrlCfg == NULL)
  444.   {
  445.   offx = Scr->WBorLeft;
  446.   offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  447.   if (NULL != ( CtrlCfgVisualInfo = GetVisualInfoA( Scr, NULL)))
  448.     {
  449.     if (NULL != ( CtrlCfgDrawInfo = GetScreenDrawInfo( Scr)))
  450.       {
  451.       CtrlCfgGList = NULL;
  452.       Gad = CreateContext( &CtrlCfgGList);
  453.       for ( loop=0 ; loop<3 ; loop++ )
  454.         if (CtrlCfgGadgetTypes[loop] != 198)
  455.           {
  456.           CopyMem((char * )&CtrlCfgNewGad[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  457.           newgad.ng_VisualInfo = CtrlCfgVisualInfo;
  458.           newgad.ng_LeftEdge += offx;
  459.           newgad.ng_TopEdge += offy;
  460.           CtrlCfgGadgets[ loop ] = NULL;
  461.           CtrlCfgGadgets[ newgad.ng_GadgetID - CtrlCfgFirstID ] = Gad = CreateGadgetA( CtrlCfgGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  462.           }
  463.       for ( loop=0 ; loop<3 ; loop++ )
  464.         if (CtrlCfgGadgetTypes[loop] == 198)
  465.           {
  466.           CtrlCfgGadgets[ loop ] = NULL;
  467.           Cla = NULL;
  468.           if (Gad)
  469.             CtrlCfgGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, CtrlCfgNewGad[ loop ].ng_GadgetText, CtrlCfgNewGad[ loop ].ng_UserData );
  470.           }
  471.       if (Gad != NULL)
  472.         {
  473.         if (NULL != (CtrlCfg = OpenWindowTags( NULL, (WA_Left), 353,
  474.                 (WA_Top), 26,
  475.                 (WA_Width), 249+offx,
  476.                 (WA_Height), 74+offy,
  477.                 (WA_Title), "Configure",
  478.                 (WA_MinWidth), 150,
  479.                 (WA_MinHeight), 25,
  480.                 (WA_MaxWidth), 1200,
  481.                 (WA_MaxHeight), 1200,
  482.                 (WA_DragBar), TRUE,
  483.                 (WA_DepthGadget), TRUE,
  484.                 (WA_CloseGadget), TRUE,
  485.                 (WA_Activate), TRUE,
  486.                 (WA_SmartRefresh), TRUE,
  487.                 (WA_AutoAdjust), TRUE,
  488.                 (WA_Gadgets), CtrlCfgGList,
  489.                 (WA_PubScreen) , (LONG)Scr,
  490.                 (WA_IDCMP),580,
  491.                 (TAG_END))))
  492.           {
  493.           RendWindowCtrlCfg(CtrlCfg, CtrlCfgVisualInfo );
  494.           GT_RefreshWindow( CtrlCfg, NULL);
  495.           RefreshGList( CtrlCfgGList, CtrlCfg, NULL, ~0);
  496.           return( 0L );
  497.           }
  498.         }
  499.       FreeGadgets( CtrlCfgGList);
  500.       FreeScreenDrawInfo( Scr, CtrlCfgDrawInfo );
  501.       }
  502.     FreeVisualInfo( CtrlCfgVisualInfo );
  503.     }
  504.   }
  505. else
  506.   {
  507.   WindowToFront(CtrlCfg);
  508.   ActivateWindow(CtrlCfg);
  509.   return( 0L );
  510.   }
  511. return( 1L );
  512. }
  513.  
  514. void CloseCtrlCfgWindow( void )
  515. {
  516. if (CtrlCfg != NULL)
  517.   {
  518.   FreeScreenDrawInfo( CtrlCfg->WScreen, CtrlCfgDrawInfo );
  519.   CtrlCfgDrawInfo = NULL;
  520.   CloseWindow( CtrlCfg);
  521.   CtrlCfg = NULL;
  522.   FreeVisualInfo( CtrlCfgVisualInfo);
  523.   FreeGadgets( CtrlCfgGList);
  524.   }
  525. }
  526.  
  527. void RendWindowLoading( struct Window *Win, void *vi )
  528. {
  529. int loop;
  530. UWORD offx = Win->BorderLeft;
  531. UWORD offy = Win->BorderTop;
  532. if (Win != NULL)
  533.   {
  534.   DrawImage( Win->RPort, &HbbsLogo_brush, 22+offx, 15+offy);
  535.   BevelTags[3] = (ULONG)vi;
  536.   DrawBevelBoxA( Win->RPort, 12+offx,44+offy,299,82, (struct TagItem *)(&BevelTags[0]));
  537.   DrawBevelBoxA( Win->RPort, 2+offx,6+offy,319,143, (struct TagItem *)(&BevelTags[0]));
  538.   DrawBevelBoxA( Win->RPort,2+4+offx,6+2+offy,319-8,143-4, (struct TagItem *)(&BevelTags[2]));
  539.   DrawBevelBoxA( Win->RPort, 12+offx,129+offy,299,15, (struct TagItem *)(&BevelTags[0]));
  540.   for( loop=0; loop<10; loop++)
  541.     if (LoadingTexts[loop].ITextFont==NULL)
  542.       LoadingTexts[loop].ITextFont=Win->WScreen->Font;
  543.   PrintIText( Win->RPort, LoadingTexts, offx, offy);
  544.   }
  545. }
  546.  
  547. int OpenLoadingWindow( void )
  548. {
  549. struct Screen *Scr;
  550. UWORD offx, offy;
  551. if (LoadingFirstRun == 0)
  552.   {
  553.   LoadingFirstRun = 1;
  554.   }
  555. if (Loading == NULL)
  556.   {
  557.   Scr = LockPubScreen(NULL);
  558.   if (NULL != Scr)
  559.     {
  560.     offx = Scr->WBorLeft;
  561.     offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  562.     if (NULL != ( LoadingVisualInfo = GetVisualInfoA( Scr, NULL)))
  563.       {
  564.       if (NULL != ( LoadingDrawInfo = GetScreenDrawInfo( Scr)))
  565.         {
  566.         if (NULL != (Loading = OpenWindowTags( NULL, (WA_Left), 221,
  567.                 (WA_Top), 102,
  568.                 (WA_Width), 327+offx,
  569.                 (WA_Height), 154+offy,
  570.                 (WA_Title), "HBBS - Loading",
  571.                 (WA_MinWidth), 150,
  572.                 (WA_MinHeight), 25,
  573.                 (WA_MaxWidth), 1200,
  574.                 (WA_MaxHeight), 1200,
  575.                 (WA_DragBar), TRUE,
  576.                 (WA_DepthGadget), TRUE,
  577.                 (WA_Activate), TRUE,
  578.                 (WA_SmartRefresh), TRUE,
  579.                 (WA_IDCMP),580,
  580.                 (TAG_END))))
  581.           {
  582.           RendWindowLoading(Loading, LoadingVisualInfo );
  583.           UnlockPubScreen( NULL, Scr);
  584.           return( 0L );
  585.           }
  586.         FreeScreenDrawInfo( Scr, LoadingDrawInfo );
  587.         }
  588.       FreeVisualInfo( LoadingVisualInfo );
  589.       }
  590.     UnlockPubScreen( NULL, Scr);
  591.     }
  592.   }
  593. else
  594.   {
  595.   WindowToFront(Loading);
  596.   ActivateWindow(Loading);
  597.   return( 0L );
  598.   }
  599. return( 1L );
  600. }
  601.  
  602. void CloseLoadingWindow( void )
  603. {
  604. if (Loading != NULL)
  605.   {
  606.   FreeScreenDrawInfo( Loading->WScreen, LoadingDrawInfo );
  607.   LoadingDrawInfo = NULL;
  608.   CloseWindow( Loading);
  609.   Loading = NULL;
  610.   FreeVisualInfo( LoadingVisualInfo);
  611.   }
  612. }
  613.  
  614. struct Screen *OpenCtrlScrnScreen(void)
  615. {
  616. CtrlScrnError = 0;
  617. return OpenScreenTagList(NULL,(struct TagItem *)CtrlScrnTags);
  618. }
  619.  
  620. int OpenLibs( void )
  621. {
  622. if ( NULL != (DiskfontBase = OpenLibrary((UBYTE *)"diskfont.library" , 36)))
  623.   if ( NULL != (GadToolsBase = OpenLibrary((UBYTE *)"gadtools.library" , 37)))
  624.     if ( NULL != (GfxBase = (struct GfxBase * )OpenLibrary((UBYTE *)"graphics.library" , 37)))
  625.       if ( NULL != (IntuitionBase = (struct IntuitionBase * )OpenLibrary((UBYTE *)"intuition.library" , 37)))
  626.         return( 0L );
  627. CloseLibs();
  628. return( 1L );
  629. }
  630.  
  631. void CloseLibs( void )
  632. {
  633. if (NULL != DiskfontBase )
  634.   CloseLibrary( DiskfontBase );
  635. if (NULL != GadToolsBase )
  636.   CloseLibrary( GadToolsBase );
  637. if (NULL != GfxBase )
  638.   CloseLibrary( ( struct Library * )GfxBase );
  639. if (NULL != IntuitionBase )
  640.   CloseLibrary( ( struct Library * )IntuitionBase );
  641. }
  642.  
  643. int OpenDiskFonts( void )
  644. {
  645.   int OKSoFar = 0;
  646. if (NULL == OpenDiskFont( &HBBS8066 ) )
  647.   OKSoFar = 1;
  648. return ( OKSoFar );
  649. }
  650.  
  651. int MakeImages( void )
  652. {
  653. UWORD failed = 0;
  654. if (NULL != (WaitPointer=AllocMem( 72, MEMF_CHIP)))
  655.   CopyMem( WaitPointerData, WaitPointer, 72);
  656. else
  657.   failed = 1;
  658. if (NULL != (HbbsLogo_brush.ImageData=AllocMem( 750, MEMF_CHIP)))
  659.   CopyMem( HbbsLogo_brushData, HbbsLogo_brush.ImageData, 750);
  660. else
  661.   failed = 1;
  662. if (failed==0)
  663.   return( 0L );
  664. else
  665.   {
  666.   FreeImages();
  667.   return( 1L );
  668.   }
  669. }
  670.  
  671. void FreeImages( void )
  672. {
  673. if (WaitPointer != NULL)
  674.   FreeMem( WaitPointer, 72);
  675. WaitPointer = NULL;
  676. if (HbbsLogo_brush.ImageData != NULL)
  677.   FreeMem(HbbsLogo_brush.ImageData, 750);
  678. HbbsLogo_brush.ImageData = NULL;
  679. }
  680.  
  681.